home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Professional Soft Collection 1.02
/
Professional Soft Collection 1.02.iso
/
nc50
/
ncpscrip.hd!
/
NCPSCRIP.HDR
Wrap
Text File
|
1995-02-07
|
14KB
|
601 lines
% ================================================
% Create a dictionary, called PSDICT, to contain
% all the verbs and variables for this stuff.
% The dictionary is created, loaded with the verbs,
% and then pushed on the dictionary stack
% ================================================
/psdict 300 dict def
psdict begin
% --- declare all variables used in the dictionary
/pagenum 1 def
/linenum 1 def
/str 1 string def
/margintop 1 def
/marginbottom 1 def
/marginleft 1 def
/marginright 1 def
/charsize 1 def
/tabsize 1 def
/columns 1 def
/numbering false def
/orientation 1 def
/pageject false def
/header [1] def
/footer [1] def
/frameleft 1 def
/frametop 1 def
/framebottom 1 def
/framevert 1 def
/pageleft 1 def
/pageright 1 def
/pagetop 1 def
/pagebottom 1 def
/headerheight 1 def
/footerheight 1 def
/buf 1 string def
/bi 1 def
/hfrow 1 def
/hfpos 1 def
/currentframe 1 def
% ============ Global 'Constants' ============
/hfpoints 12 def % point size for header/footer font
/hffont /Times-Roman findfont hfpoints scalefont def
% ============ Settings Commands ============
% ------------ PSCS : Set Character Size
/pscs {
/charsize exch def
} bind def
% ------------ PSMT : Set Margin Top
/psmt {
/margintop exch 72 mul def
} bind def
% ------------ PSML : Set Margin Left
/psml {
/marginleft exch 72 mul def
} bind def
% ------------ PSMR : Set Margin Right
/psmr {
/marginright exch 72 mul def
} bind def
% ------------ PSMB : Set Margin Bottom
/psmb {
/marginbottom exch 72 mul def
} bind def
% ------------ PSTS : Set Tab Size
/psts {
/tabsize exch def
} bind def
% ------------ PSCO : Set Columns per page
/psco {
/columns exch def
columns 1 lt {/columns 1 def} if
} bind def
% ------------ PSOR : Set Page Orientation
/psor {
/orientation exch def
} bind def
% ------------ PSNL : Number Lines, non-zero=enable, zero=disable
/psnl {
/numbering exch 0 ne def
} bind def
% ------------ PSPE : Page Eject on form feed, non-zero=enable/zero=disable
/pspe {
/pageject exch 0 ne def
} bind def
% ------------ PSHD : Header, an array of strings
/pshd {
/header exch def
} bind def
% ------------ PSFT : Footer, an array of strings
/psft {
/footer exch def
} bind def
%
% Hughs code starts here
%
% Standard short abbreviations:
/bd {bind def} bind def
/ld {load def} bd
/slw /setlinewidth ld
/cpt /currentpoint ld
/cph /closepath ld
/sg /setgray ld
% Global important variables
% (these may be changed at runtime but we need them now)
/windows false def % windows or OS/2?
% Font section
% Routine to duplicate fonts with a new encoding vector
% Based on Manuscript code....
/recd 10 dict def
/pcft {
recd begin
/ncs windows {ANSI8vec} {CP850vec} ifelse def
/nfn exch def
/bfn exch def
/bfd bfn findfont def
/nf bfd maxlength dict def
bfd {
exch dup dup /FID ne exch
/Encoding ne and {exch nf 3 1 roll put} {pop pop} ifelse
} forall
nf/FontName nfn put
nf/Encoding ncs put
nfn nf definefont pop end
} bd
/fs{exch /pt exch def ff pt cu scf sf}bd
/setfonts {
% Define the appropriate encoding vector for Postscript characters:
% either for Windows (based on ANSI-8 character set),
% or for Presentation Manager (based on codepage 850) (assumes!!!)
windows {
% Windows :
% define a new encoding vector based on ANSI character set
/ANSI8vec 256 array def
StandardEncoding ANSI8vec copy pop
/dotaccent/bullet/quotesingle/quotedblleft/quotedblright
/quotesinglbase/quotedblbase/guilsinglleft/guilsinglright/.notdef
/ellipsis/perthousand/.notdef/.notdef/paragraph
/section/dagger/daggerdbl/OE/oe
/fi/fl/endash/emdash/fraction
/Ydieresis
ANSI8vec 6 26 getinterval astore pop
/quotesingle
ANSI8vec 39 1 getinterval astore pop
/grave
ANSI8vec 96 1 getinterval astore pop
/bar
ANSI8vec 124 1 getinterval astore pop
% 128
/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/quoteleft/quoteright/quotedblleft
% 148
/quotedblright/bullet/endash/emdash/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/space/exclamdown/cent
/sterling/currency/yen/brokenbar/section
% 168
/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus
/twosuperior/threesuperior/acute/mu/paragraph
/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright
% 188
/onequarter/onehalf/threequarters/questiondown/Agrave
/Aacute/Acircumflex/Atilde/Adieresis/Aring
/AE/Ccedilla/Egrave/Eacute/Ecircumflex
/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
% 208
/Eth/Ntilde/Ograve/Oacute/Ocircumflex
/Otilde/Odieresis/multiply/Oslash/Ugrave
/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde
% 228
/adieresis/aring/ae/ccedilla/egrave
/eacute/ecircumflex/edieresis/igrave/iacute
/icircumflex/idieresis/eth/ntilde/ograve
/oacute/ocircumflex/otilde/odieresis/divide
% 248
/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
ANSI8vec 128 128 getinterval astore pop
}
{
% Presentation Manager:
% define a new encoding vector based on code page 850
/CP850vec 256 array def
StandardEncoding CP850vec copy pop
/dotaccent/bullet/quotesingle/quotedblleft/quotedblright
/quotesinglbase/quotedblbase/guilsinglleft/guilsinglright/.notdef
/ellipsis/perthousand/.notdef/.notdef/paragraph
/section/dagger/daggerdbl/OE/oe
/fi/fl/endash/emdash/fraction
/Ydieresis
CP850vec 6 26 getinterval astore pop
/Ccedilla/udieresis/eacute/acircumflex/adieresis
/agrave/aring/ccedilla/ecircumflex/edieresis
/egrave/idieresis/icircumflex/igrave/Adieresis
/Aring/Eacute/ae/AE/ocircumflex
/odieresis/ograve/ucircumflex/ugrave/ydieresis
/Odieresis/Udieresis/oslash/sterling/Oslash
/.notdef/florin/aacute/iacute/oacute
/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
/questiondown/registered/.notdef/onehalf/onequarter
/exclamdown/guillemotleft/guillemotright/.notdef/.notdef
/.notdef/.notdef/.notdef/Aacute/Acircumflex
/Agrave/copyright/.notdef/.notdef/.notdef
/.notdef/cent/yen/.notdef/.notdef
/grave/.notdef/circumflex/tilde/.notdef
/atilde/Atilde/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/currency
/eth/Eth/Ecircumflex/Edieresis/Egrave
/dotlessi/Iacute/Icircumflex/Idieresis/.notdef
/.notdef/.notdef/.notdef/brokenbar/Igrave
/.notdef/Oacute/germandbls/Ocircumflex/Ograve
/otilde/Otilde/.notdef/thorn/Thorn
/Uacute/Ucircumflex/Ugrave/yacute/Yacute
/.notdef/acute/.notdef/.notdef/.notdef
/threequarters/paragraph/section/.notdef/cedilla
/ring/dieresis/periodcentered/onesuperior/threesuperior
/twosuperior/.notdef/.notdef
CP850vec 128 128 getinterval astore pop
} ifelse
% Set up the appropriate fonts now
/Courier /CR pcft
% /Courier-Bold /CoRB pcft
% /Courier-Oblique /CRO pcft
% /Courier-BoldOblique /CRBO pcft
/Times-Roman /TIM pcft
% /Times-Bold /TIB pcft
% /Times-Italic /TII pcft
% /Times-BoldItalic /TBI pcft
% /Helvetica /HEL pcft
/Helvetica-Bold /HLB pcft
% /Helvetica-Oblique /HLO pcft
% /Helvetica-BoldOblique /HBO pcft
/Sym{/Symbol fs}bd
% Initialise the ones we're using:
setscale
} bd
% these must only be run after setfonts
/dlgchar {/CR findfont ch1 scalefont setfont} bd
/headchar {/TIM findfont ch2 scalefont setfont} bd
/footchar {/TIM findfont ch3 scalefont setfont} bd
%
% Hughs code ends here
%
% ============ Local Routines ============
% ------------ InsertPage
/insertpage {
dup (#) search
{
pop pop pop % remove the results of successful search
/buf 100 string def % make a clean buffer area
/bi 0 def % indexer into buf
{
dup 35 eq % is it the '#' character?
{
pagenum
6 string
cvs
dup length % number of chars in pagenum string
buf bi 4 -1 roll % set up for putinterval
putinterval
bi add /bi exch def % advance bi over pagenum string
}
{
buf bi % just copy the char to buf
3 -1 roll
put
/bi bi 1 add def % advance the index
}
ifelse
}
forall
buf (\000) search % find the terminating null
pop % throw away boolean result
exch pop % throw away match substring
exch pop % throw away post substring
}
{
pop % remove the duplicate string
}
ifelse
} bind def
% ------------ LeftText
/lefttext {
pageleft exch moveto
show
} bind def
% ------------ CenterText
/centertext {
pageleft
pagewidth 2 div
add
2 index
stringwidth pop 2 div
sub
exch moveto
show
} bind def
% ------------ RightText
/righttext {
pageright
2 index
stringwidth pop
sub
exch moveto
show
} bind def
% ------------ DoHeader
/doheader {
gsave
newpath
pageleft pagetop headerheight sub moveto
pageright pagetop headerheight sub lineto
stroke
hffont setfont
/hfrow 1 def
/hfpos 0 def
header
{
insertpage
pagetop hfpoints hfrow mul sub
hfpos 0 eq {lefttext} if
hfpos 1 eq {centertext} if
hfpos 2 eq {righttext} if
hfpos 2 ge
{/hfpos 0 def /hfrow hfrow 1 add def}
{/hfpos hfpos 1 add def}
ifelse
} forall
grestore
} bind def
% ------------ DoFooter
/dofooter {
gsave
newpath
pageleft pagebottom footerheight add moveto
pageright pagebottom footerheight add lineto
stroke
hffont setfont
/hfrow 1 def
/hfpos 0 def
footer
{
insertpage
pagebottom footerheight add hfpoints hfrow mul sub
hfpos 0 eq {lefttext} if
hfpos 1 eq {centertext} if
hfpos 2 eq {righttext} if
hfpos 2 ge
{/hfpos 0 def /hfrow hfrow 1 add def}
{/hfpos hfpos 1 add def}
ifelse
} forall
grestore
} bind def
% ------------ StartFrame
/startframe {
grestore
/frameleft currentframe 1 sub framewidth mul pageleft add def
/framevert frameleft 5 add def
numbering
{
/framevert frameleft linumwidth 5 add add def
} if
/frametop pagetop headerheight sub def
/framebottom pagebottom footerheight add def
currentframe 1 gt
{
newpath
frameleft frametop moveto
frameleft framebottom lineto
stroke
} if
gsave newpath
frameleft framebottom moveto
frameleft frametop lineto
frameleft framewidth add frametop lineto
frameleft framewidth add framebottom lineto
closepath
clip
textfont setfont
framevert frametop linesize sub moveto
} bind def
% ------------ FirstFrame
/firstframe {
/currentframe 1 def
startframe
} bind def
% ------------ NextFrame
/nextframe {
/currentframe currentframe 1 add def
currentframe columns gt
{
grestore
showpage
nextpage
}
{
startframe
}
ifelse
} bind def
% ------------ StartPage
/startpage {
orientation 0 eq
{ % --- Portrait
}
{ % --- Landscape
90 rotate
0 -612 translate
}
ifelse
header length 0 ne {doheader} if
footer length 0 ne {dofooter} if
gsave
firstframe
} bind def
% ------------ FirstPage
/firstpage {
orientation 0 eq
{ % Portrait
/pageleft marginleft def
/pageright 612 marginright sub def
/pagetop 792 margintop sub def
/pagebottom marginbottom def
}
{ % Landscape
/pageleft marginleft def
/pageright 792 marginright sub def
/pagetop 612 margintop sub def
/pagebottom marginbottom def
}
ifelse
/pagewidth pageright pageleft sub def
/framewidth pagewidth columns div def
/textfont /CR findfont charsize scalefont def
textfont setfont
/linesize charsize def
/tabdist (0123456789) stringwidth pop 10 div tabsize mul def
/linumfont /CR findfont charsize scalefont def
linumfont setfont
/linumwidth (00000) stringwidth pop def
/headerheight header length 2 add 3 idiv hfpoints mul 6 add def
/footerheight footer length 2 add 3 idiv hfpoints mul def
startpage
} def
% ------------ NextPage
/nextpage {
/pagenum pagenum 1 add def
startpage
} bind def
% ============ Text File Commands ============
% ------------ BF : Begin File
/bf {
/pagenum 1 def
/linenum 1 def
firstpage
} def
% ------------ EF : End File
/ef {
showpage
} bind def
% ------------ TA : Tab
/ta {
currentpoint exch
framevert {dup 1 sub 2 index gt {exit} if tabdist add} loop
exch pop exch moveto
} def
% ------------ LF : Line Feed
/lf {
numbering
{
% save current point and font
currentpoint
currentfont
linumfont setfont
/str 7 string def
linenum str cvs dup stringwidth pop
neg framevert add 5 sub currentpoint exch pop moveto
show
% restore current point and font
setfont
moveto
} if
0 linesize neg rmoveto
currentpoint exch pop framebottom 2 add le {nextframe} if
/linenum linenum 1 add def
} bind def
% ------------ CR : Carrage Return
/cr {
currentpoint exch pop framevert exch moveto
} bind def
% ------------ TX : Text
/tx {
show
} bind def
% ------------ CODE : process some other character code
/code {
/codechar exch def
/codeshow true def
codechar 12 eq {pageject {/codeshow false def nextframe} if} if
codeshow {(\250) show} if
} def
% +===============================================+
% | The program will append the file's settings |
% | and the `packaged' file after this header. |
% +===============================================+
8 psts
9 pscs
0 psnl
1 pspe
0 psor
1 psco
0.500 psmt
0.750 psml
0.500 psmr
0.500 psmb
setfonts